previsione di diramazione o di salto
|
Le macchine con pipeline acquisiscono (fetch) lÆistruzione successiva
prima di aver completato lÆesecuzione di quella corrente. Se quella
corrente prevede una derivazione (salto), allora è possibile che
lÆistruzione successiva sia stata recuperata dallÆarea di memoria
sbagliata. La branch prediction è una tecnica che cerca dÆindovinare quale
sarà lÆindirizzo appropriato per la prossima istruzione, sapendo
unicamente lÆindirizzo di quella corrente. A questo scopo si utilizza una
memoria associativa chiamata BTB (Branch Target Buffer).
La maggior parte dei processori recuperano ed eseguono le istruzioni una
dopo lÆaltra. Talvolta, però, queste non vengono eseguite nello stesso
ordine con cui sono registrate in memoria. Quando il flusso sequenziale
viene interrotto per eseguire una porzione di codice diversa si verifica
il cosiddetto "branch" o salto la cui presenza può introdurre ritardi
nellÆesecuzione e ridurre le prestazioni. Se il processore conosce in
anticipo il verificarsi di un salto e lÆindirizzo a cui saltare, può
recuperare in prestazioni. Questo è difficile da realizzare perché la
decisione di salto viene presa nel momento in cui si arriva a quel
particolare punto del programma. Tuttavia tenendo una storia di quanto è
avvenuto nel passato si può predire il futuro e la funzione di branch
prediction interna a processori come il Pentium serve a questo scopo. Una
branch prediction ben progettata può azzeccare le previsioni di salto 9
volte su 10 e in tal modo determinare un miglioramento di prestazioni del
25%.
|
|